www.gusucode.com > Heart Sound Classifier工具箱源码matlab程序代码 > Heart Sound Classifier/HeartSoundClassificationNew/HelperFunctions/extractFeaturesCodegen.m
function features = extractFeaturesCodegen(signal, fs, window_length, window_overlap) %Function to extract only selected features for code generation portion of %the heart sound classification demo. %Copyright (c) 2016, MathWorks, Inc. overlap_length = window_length * window_overlap / 100; step_length = window_length - overlap_length; number_of_windows = floor( (length(signal) - overlap_length*fs) / (fs * step_length)); number_of_features = 15; features = zeros(number_of_windows, number_of_features); for iwin = 1:number_of_windows current_start_sample = (iwin - 1) * fs * step_length + 1; current_end_sample = current_start_sample + window_length * fs - 1; current_signal = signal(current_start_sample:current_end_sample); % Calculate kurtosis of the signal values features(iwin, 1) = kurtosis(current_signal); % Extract features from the power spectrum [~, maxval, ~] = dominant_frequency_features(current_signal, fs, 256, 0); features(iwin, 2) = maxval; % Extract MFCC features Tw = window_length*1000;% analysis frame duration (ms) Ts = 10; % analysis frame shift (ms) alpha = 0.97; % preemphasis coefficient M = 20; % number of filterbank channels C = 12; % number of cepstral coefficients L = 22; % cepstral sine lifter parameter LF = 5; % lower frequency limit (Hz) HF = 500; % upper frequency limit (Hz) [MFCCs, ~, ~] = mfcc(current_signal, fs, Tw, Ts, alpha, @hamming, [LF HF], M, C+1, L); features(iwin, 3) = MFCCs(1); features(iwin, 4) = MFCCs(2); features(iwin, 5) = MFCCs(3); features(iwin, 6) = MFCCs(4); features(iwin, 7) = MFCCs(5); features(iwin, 8) = MFCCs(6); features(iwin, 9) = MFCCs(8); features(iwin, 10) = MFCCs(9); features(iwin, 11) = MFCCs(10); features(iwin, 12) = MFCCs(11); features(iwin, 13) = MFCCs(12); features(iwin, 14) = MFCCs(13); features(iwin, 15) = MFCCs(13); end